package cc.rengu.igas.opms.common.util;

import cc.rengu.oltp.utility.util.AmountUtil;
import cc.rengu.oltp.utility.util.StringUtil;
import cc.rengu.utility.log.RgLog;
import cc.rengu.utility.log.RgLogger;

import java.lang.reflect.Field;

/**
 * 接口参数bean处理工具类
 *
 * @author panky
 * @version 1.0.0 创建时间：20200911
 */
public class ParameterUtil {
    /**
     * 去掉bean对象的参数值的前后空格，并对AMT结尾参数进行金额格式化处理
     * getter 和 setter方法必须对应
     *
     * @param obj 待处理的对象
     */
    public static void paramertTrimAndFormatAmt(Object obj) {
        RgLogger rglog = RgLog.getLogger(ParameterUtil.class.getName());
        try {
            Field[] fields = obj.getClass().getDeclaredFields();
            for (Field field : fields) {
                field.setAccessible(true);
                String fieldName = field.getName();
                String fieldValue = (String) field.get(obj);
                if (!StringUtil.isEmptyOrNull(fieldValue)) {
                    String procFieldValue = fieldValue.trim();
                    if (fieldName.toLowerCase().endsWith("amt")) {
                        procFieldValue = AmountUtil.checkAmt(fieldValue, 2);
                    }
                    field.set(obj, procFieldValue);
                    rglog.debug("对参数<{}>进行格式化处理,处理前:<{}>,处理后:<{}>", fieldName, fieldValue, procFieldValue);
                }
            }
        } catch (Exception e) {
            rglog.warn("参数格式化处理失败:<{}>", e.getMessage());
        }
    }
}
